﻿תוכן דינאמי
===============

כשמשתמשים [שמירת חלקים](/doc/guide/caching.fragment) או [שמירת עמוד שלם](/doc/guide/caching.page), אנו בדרך כלל נתקלים במצבים איפה שכל העמוד הוא יחסית תוכן סטטי מלבד חלק אחד או יותר. לדוגמא, עמוד עזרה מציג מידע סטטי אודות עזרה באתר אבל עם שמו של המשתמש שגרגע מחובר לאתר מוצג בראש העמוד.

כדי לפתור בעיה זו, ניתן לשמור את התוכן במטמון על פי שם המשתמש, אך זה יהיה בזבוז מקום האחסון היקר של המטמון בו אנו משתמשים מאחר והתוכן הוא זהה בכל צורה מלבד שם המשתמש. ניתן גם לחלק את העמוד לחתיכות ולשמור אותם בנפרד, אך זה מסבך את קובץ התצוגה שלנו והקוד שלנו נראה מאוד מורכב. שיטה טובה יותר היא להשתמש באפשרות השמירה של *התוכן הדינאמי* הקיים ב [CController].

תוכן דינאמי הוא חתיכת תוכן שלא צריך להשמר במטמון גם אם הוא מוקף בקוד השומר חתיכת תוכן במטמון. כדי שהתוכן יהיה תמיד דינאמי, הוא צריך להווצר כל הזמן גם אם התוכן בו הוא נמצא נשלף מתוך המטמון. מסיבה זו, אנו דורשים שתוכן דינאמי יווצר על ידי מתודה או פונקציה כלשהי.

אנו קוראים ל [CController::renderDynamic] כדי להכניס תוכן דינאמי במקום הרצוי.

~~~
[php]
...other HTML content...
«?php if($this-»beginCache($id)) { ?»
...fragment content to be cached...
    «?php $this-»renderDynamic($callback); ?»
...fragment content to be cached...
«?php $this-»endCache(); } ?»
...other HTML content...
~~~

בדוגמא למעלה, `callback$` מתייחס לפונקציה או מתודה תקנית של PHP. ההגדרה צריכה להיות סטרינג המתייחס למתודה במחלקה הנוכחית או פונקציה גלובלית. כמו כן היא יכולה להיות מערך אשר מתייחס למתודה במחלקה. כל הפרמטרים הנוספים שיוגדרו [renderDynamic|CController::renderDynamic] יועברו לפונקציה/מתודה אשר הוגדרה. הפונקציה/מתודה שהוגדרה צריכה להחזיר את התוכן ולא להציג אותו.

«div class="revision"»$Id: caching.dynamic.txt 163 2008-11-05 12:51:48Z weizhuo $«/div»